Live streaming of data such as audio and video data to a mobile device, such as a cellular phone or Personal Digital Assistant (PDA), can be a challenging task due to many factors including, for example, the heterogeneity of the devices. In particular, mobile devices vary widely in terms of display size, main memory capacity, processor type and power, media capability, and network access technology. In typical streaming systems, real-time media adaptation is performed to meet the requirements of heterogeneous mobile devices. With respect to video, such media adaptation is often achieved by video transcoding, which converts an original video bit stream to a new bit stream for a different encoding standard, smaller spatial resolution, reduced frame rate, or reduced quality (due to coarser quantization).
However, transcoding poses a considerable computational burden on the streaming server, because mobile devices often require individually customized transcoding. In other words, the transcoding that is performed to service the video request of a particular device will often not be appropriate for another device requesting the same material at the same time. Thus, the computational burden of transcoding is multiplied by the number of potentially required formats, making the streaming of video to mobile devices a computationally intensive endeavor. Moreover, peers, as commodity computers, are not as reliable as servers, making the shifting of the transcoding task from a server to an ordinary peer of a P2P system very challenging.